package com.linkgie.galaxyframework.crypto;

/**
 * 密码数据报；
 * <p>
 * 
 * 标识由特定密码算法产生的密码数据；
 * 
 * @author liso
 *
 */
public interface Cryptogram {

	/**
	 * 密码算法；
	 * 
	 * @return
	 */
	public Algorithm getAlgorithm();

	/**
	 * 编码后的二进制形式的内容；
	 * 
	 * @return
	 */
	public byte[] getEncoded();

	/**
	 * 返回密码算法生成的原始数据；
	 * <p>
	 * 
	 * 注：原始的密码数据是框架无关、平台无关、编程实现无关的，相同的密码算法计算得到相同的结果；
	 * 
	 * @return
	 */
	public byte[] getRaw();

	/**
	 * 编码后的字符串形式的内容；
	 * 
	 * @return
	 */
	String getEncodedString();

	/**
	 * 返回密码算法生成的原始数据；
	 * <p>
	 * 
	 * 注：原始的密码数据是框架无关、平台无关、编程实现无关的，相同的密码算法计算得到相同的结果；
	 * 
	 * @return Base58 格式的字符串；
	 */
	public String getRawBase58();

	/**
	 * 返回密码算法生成的原始数据；
	 * <p>
	 * 
	 * 注：原始的密码数据是框架无关、平台无关、编程实现无关的，相同的密码算法计算得到相同的结果；
	 * 
	 * @return Base64 格式的字符串；
	 */
	public String getRawBase64();
}
